package jermedit.gobjekte;

import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import javax.swing.SwingUtilities;


public class Entity extends PolygonObject{

       
    public Entity(int x, int y, int id){
        this.x = x;
        this.y = y;
        this.name="";
        this.id = id;
        breite = 60;
        laenge = 30;
        
        boundingBox = (new Rectangle (x-breite/2,y-laenge/2, breite, laenge)).getBounds();
        obenmitte = new EditPoint (x,y-laenge/2);
        mittelinks = new EditPoint(x-breite/2,y);
        mitterechts = new EditPoint(x+breite/2,y);
        untenmitte = new EditPoint(x,y+laenge/2);
    }   

    @Override
    public void drawSub(Graphics2D g2) {
       g2.drawRect(x-breite/2,y-laenge/2, breite, laenge);
       FontMetrics fm = g2.getFontMetrics();
       int strWidth = SwingUtilities.computeStringWidth(fm, name);
       g2.drawString(name, x-strWidth/2, y+fm.getAscent()/2);
    }


    public boolean isInArea(int x, int y) {
        return (x > this.x-breite/2  && x < this.x +breite/2 && y > this.y-laenge/2  && y < this.y+laenge/2);
    }
    
    // takes x,y , b, h and calculates the 8 Points
    public void move(int x, int y){
        super.move(x,y);
        boundingBox.move(x-breite,y-laenge);

         //Verschiebe die Eckpunkte zusammen mit dem Basistyp
        obenmitte.move(x,y-laenge/2);
        mittelinks.move(x-breite/2,y);
        mitterechts.move(x+breite/2,y);
        untenmitte.move(x,y+laenge/2);
    }
        @Override
    public Point linkerObenEckpunkt(){
        Point liOben = new Point(x-getBreite()/2,y-getLaenge()/2);
        return liOben;
    }
        
    @Override
    public Point rechterObenEckpunkt(){
        Point reOben = new Point(x+getBreite()/2,y-getLaenge()/2);
        return reOben;
    }
    
    @Override
    public Point linkerUntenEckpunkt(){
        Point liUnten = new Point(x-getBreite()/2,y+getLaenge()/2);
        return liUnten;
    }
    
    @Override
    public Point rechterUntenEckpunkt(){
        Point reUnten = new Point(x+getBreite()/2,y+getLaenge()/2);
        return reUnten;
    }

    @Override
    public int getBreite() {
        return breite;
    }

    @Override
    public void setBreite(int breite) {
        this.breite = breite;
    }

    @Override
    public int getLaenge() {
        return laenge;
    }

    @Override
    public void setLaenge(int länge) {
        this.laenge = länge;
    }
  }

